package steampunk.sound;

public interface Player {
	/**
	 * Plays the sound clip from the given file. If a
	 * sound with the given name is already playing (or looping,
	 *  or paused), a new sound clip will be loaded and played
	 *  in addition to the original.
	 * @param filename
	 */
	public void play(String filename);
	/**
	 * Loops the sound clip from the given file. If a
	 * sound with the given name is already playing (or looping,
	 *  or paused), a new sound clip will be loaded and looped
	 *  in addition to the original.
	 * @param filename
	 */
	public void loop(String filename);
	/**
	 * Stops the sound clip from the given file (stops playing
	 * and "rewinds"). Does nothing if there isn't any loaded
	 * sound clip with that name.
	 * @param filename
	 */
	public void stop(String filename);
	/**
	 * Pauses the sound clip from the given file. Does nothing
	 * if there are no sound clips with that name playing or
	 * looping.
	 * @param filename
	 */
	public void pause(String filename);
	/**
	 * Unpauses the sound clip from the given file (if it is
	 * currently loaded and paused)
	 * @param filename
	 */
	public void unpause(String filename);
	/**
	 * Pauses <i>all the sound clips</i> that were
	 * loaded from that file (eg, if there are lots of
	 * exploding noises, they will all pause).
	 * @param filename
	 */
	public void pauseAll(String filename);
	/**
	 * Stops <i>all the sound clips</i> that were loaded
	 * from that file.
	 * @param filename
	 */
	public void stopAll(String filename);
	/**
	 * Unpauses <i>all the sound clips</i> with that
	 * name that were currently playing.
	 * @param filename
	 */
	public void unpauseAll(String filename);
}
